<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>ファイル保存のバグ ＆ すべて置換の速度アップ | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">1775</span>
    <a class="thread-title" href="1775.html#1775">ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1776</span>
    <a class="thread-title" href="1775.html#1776">Re:ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    </li><li><div class="list-title">
    <span class="no">1825</span>
    <a class="thread-title" href="1775.html#1825">Re: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1826</span>
    <a class="thread-title" href="1775.html#1826">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1827</span>
    <a class="thread-title" href="1775.html#1827">Re3: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    </li></ul></li></ul></li><li><div class="list-title">
    <span class="no">1832</span>
    <a class="thread-title" href="1775.html#1832">Re: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1836</span>
    <a class="thread-title" href="1775.html#1836">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    </li><li><div class="list-title">
    <span class="no">1850</span>
    <a class="thread-title" href="1775.html#1850">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1851</span>
    <a class="thread-title" href="1775.html#1851">Re3: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1852</span>
    <a class="thread-title" href="1775.html#1852">Re4: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1853</span>
    <a class="thread-title" href="1775.html#1853">Re5: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1866</span>
    <a class="thread-title" href="1775.html#1866">Re6: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1874</span>
    <a class="thread-title" href="1775.html#1874">Re7: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1886</span>
    <a class="thread-title" href="1775.html#1886">Re8: ファイル保存のバグ ＆ すべて置換の速度アップ</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=1775>
    <span class="no">[1775]</span>
    <a class="thread-title" href="#1775">ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-03-29T20:11:40">2002年03月29日 20:11</time></h1>
    <div class="body"> 開発者のみなさん初めまして。<br><br> ちょっと気になる部分があったので修正してみました。<br>・隠し属性が付いているファイルを保存できない。<br>・「すべて置換」時の置換速度。<br>　・正規表現<br>　・クリップボードから貼り付ける<br>　通常の置換にも一応手を入れたのですが、ほとんど速度は上がりませんでした。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/CDocLineMgr_2002_03_25-29.zip target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>CDocLine<wbr>Mgr_2002<wbr>_03_25-<wbr>29.<wbr>zip</nobr></a><br></div></section>
    <ul><li><section><h1 id=1776>
    <span class="no">[1776]</span>
    <a class="thread-title" href="#1776">Re:ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">やざき</span>
    <time datetime="2002-03-30T22:30:40">2002年03月30日 22:30</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt;  開発者のみなさん初めまして。<br>&gt; <br>&gt;  ちょっと気になる部分があったので修正してみました。<br>&gt; ・隠し属性が付いているファイルを保存できない。<br>&gt; ・「すべて置換」時の置換速度。<br>&gt; 　・正規表現<br>&gt; 　・クリップボードから貼り付ける<br>&gt; 　通常の置換にも一応手を入れたのですが、ほとんど速度は上がりませんでした。<br>&gt; <br>&gt; <a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/CDocLineMgr_2002_03_25-29.zip target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>CDocLine<wbr>Mgr_2002<wbr>_03_25-<wbr>29.<wbr>zip</nobr></a><br><br>thanx! 取り込みました。</div></section>
    </li><li><section><h1 id=1825>
    <span class="no">[1825]</span>
    <a class="thread-title" href="#1825">Re: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-05T10:58:56">2002年04月05日 10:58</time></h1>
    <div class="body">CBregexpのデストラクタでDeinitDllを呼び出していますが，CDllHandlerでライブラリ解放前にDeinitDll()を呼び出すようになっているのでこの記述が無くても大丈夫だと思います．<br><br>と書きながら不安になったのですが，オブジェクトを削除したときは~CBregexp→~CDllHander→CBregexp::DeinitDllの順に呼び出されることになるんでしょうか．そうなるとCBregexpのデストラクタの後でDeinitDllが動くことになってまずいような気がする．<br><br>CDllHandler::~CDllHandlerで派生クラスのメソッドをたたくのがよろしくないなら，CDllHanderを直して解放は派生クラスのデストラクタで個別に行うようにした方がいいですね．<br></div></section>
    <ul><li><section><h1 id=1826>
    <span class="no">[1826]</span>
    <a class="thread-title" href="#1826">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-04-06T14:49:32">2002年04月06日 14:49</time></h1>
    <div class="body">▼ げんたさん<br>&gt; CBregexpのデストラクタでDeinitDllを呼び出していますが，CDllHandlerでライブラリ解放前にDeinitDll()を呼び出すようになっているのでこの記述が無くても大丈夫だと思います．<br>&gt;<br>&gt; と書きながら不安になったのですが，オブジェクトを削除したときは~CBregexp→~CDllHander→CBregexp::DeinitDllの順に呼び出されることになるんでしょうか．そうなるとCBregexpのデストラクタの後でDeinitDllが動くことになってまずいような気がする．<br> そうはならないみたいです。<br> ちょっと私も自信がなかったものですから、簡単なテストプログラムを作ってテストしてみましたが、CDllHandler::~CDllHandler で派生クラス(CBregexp)のメソッド(DeinitDll)をたたくのは出来ないようです。<br> CDllHandler クラスのメソッドがたたけるのは CDllHandler のメソッドでしかないみたいです。<br><br> 以下のようはプログラムプログラムを書いたとします。<br><br>#include &lt;stdio.h&gt;<br>class Parent<br>{<br>public:<br>&#9;Parent(){};<br>&#9;virtual ~Parent(){ DeinitDll(); };<br><br>protected:<br>&#9;virtual void DeinitDll(){ printf("Parent::Deinit()\r\n"); }<br>};<br><br>class Child : public Parent<br>{<br>public:<br>&#9;Child(){};<br>&#9;virtual ~Child(){};<br><br>protected:<br>&#9;virtual void DeinitDll(){ printf("Child::DeinitDll()\r\n"); }<br>};<br><br>int main(int argc, char* argv[])<br>{<br>&#9;Child hoge;<br>&#9;return 0;<br>}<br><br> これで見てみますと、Child 開放時に Parent::~Parent 内部で呼ばれるのは Child::DeinitDll() ではなく、Parent::DeinitDll() が呼ばれるようです。<br> ですので、派生クラスで DeinitDll を定義しなおしたら、派生クラスで開放時に ちゃんと呼び出さないとまずいようです。<br></div></section>
    <ul><li><section><h1 id=1827>
    <span class="no">[1827]</span>
    <a class="thread-title" href="#1827">Re3: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-07T01:37:35">2002年04月07日 01:37</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt;  Child 開放時に Parent::~Parent 内部で呼ばれるのは Child::DeinitDll() ではなく、Parent::DeinitDll() が呼ばれるようです。<br>なるほど。コンストラクタでは仮想関数のポリモーフィズムは行われないようにデストラクタでも行われないのですね。<br><br>&gt;  派生クラスで DeinitDll を定義しなおしたら、派生クラスで開放時に ちゃんと呼び出さないとまずいようです。<br>この場合は~CDllHandlerでDeinitDllを呼び出すこと自体無意味ですね。</div></section>
    </li></ul></li></ul></li><li><section><h1 id=1832>
    <span class="no">[1832]</span>
    <a class="thread-title" href="#1832">Re: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-09T12:39:56">2002年04月09日 12:39</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt;・隠し属性が付いているファイルを保存できない。<br>この部分は以前 _lwriteなどの低水準入出力だったのを書き込み速度改善のためにf***系に変更した経緯があります．<br>今回ファイル操作がC標準関数からWindows APIに変更されていますが，ライブラリによるバッファリングが行われれなくなって速度が低下するということは無いでしょうか．<br><br>速度に影響するなら 属性取得→ファイル削除→ファイル保存(従来通り)→属性設定 の方が良いように思います．<br></div></section>
    <ul><li><section><h1 id=1836>
    <span class="no">[1836]</span>
    <a class="thread-title" href="#1836">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-09T22:28:03">2002年04月09日 22:28</time></h1>
    <div class="body">▼ げんたさん<br>&gt; 速度に影響するなら 属性取得→ファイル削除→ファイル保存(従来通り)→属性設定 の方が良いように思います．<br><br>で、速度に影響しましたか？ &gt; げんた<br></div></section>
    </li><li><section><h1 id=1850>
    <span class="no">[1850]</span>
    <a class="thread-title" href="#1850">Re2: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-04-12T23:48:56">2002年04月12日 23:48</time></h1>
    <div class="body"> すいません。<br> 最近、急に忙しくなって、全くこちらへ来れませんでした。<br><br>▼ げんたさん<br>&gt; ▼ Azumaiyaさん<br>&gt; &gt;・隠し属性が付いているファイルを保存できない。<br>&gt; この部分は以前 _lwriteなどの低水準入出力だったのを書き込み速度改善のためにf***系に変更した経緯があります．<br> そういう経緯があったとは知りませんでした。<br><br>&gt; 今回ファイル操作がC標準関数からWindows APIに変更されていますが，ライブラリによるバッファリングが行われれなくなって速度が低下するということは無いでしょうか．<br> 試してみましたら、大きいファイルだと、ものすごく遅くなっていますね。<br> これはかなりまずいかもしれませんね。<br><br>&gt; 速度に影響するなら 属性取得→ファイル削除→ファイル保存(従来通り)→属性設定 の方が良いように思います．<br> そうですね。<br> そのほうがいいと思います。<br> ただ、削除してしまうというのは読み取り属性があっても、ファイルを消すことがあるような気がしますので、<br><br> 属性取得→属性変更(隠し属性と、システム属性を抜く)→ファイル保存(従来通り)→属性設定<br><br> というのはどうでしょうか？<br></div></section>
    <ul><li><section><h1 id=1851>
    <span class="no">[1851]</span>
    <a class="thread-title" href="#1851">Re3: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-04-13T00:41:13">2002年04月13日 00:41</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt;  ただ、削除してしまうというのは読み取り属性があっても、ファイルを消すことがあるような気がしますので、<br>&gt; <br>&gt;  属性取得→属性変更(隠し属性と、システム属性を抜く)→ファイル保存(従来通り)→属性設定<br>&gt; <br>&gt;  というのはどうでしょうか？<br> 私の引き起こした問題なので、修正しておきました。<br><br>http://www.egroups.co.jp/files/sakura-editor/Developer/Source/ssrc_2002-04-12_13.zip<br><br> にアップロードしてあります。<br><br> しかし、普通に CreateFile して、WriteFile をするとあそこまで遅くなるものなのですねぇ。<br> 知りませんでした。</div></section>
    <ul><li><section><h1 id=1852>
    <span class="no">[1852]</span>
    <a class="thread-title" href="#1852">Re4: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-04-13T00:45:58">2002年04月13日 00:45</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt;  属性取得→属性変更(隠し属性と、システム属性を抜く)→ファイル保存(従来通り)→属性設定<br> 抜くのでは上手くいかなかったので、こんな流れにしました。<br><br> 属性取得→属性変更(読み取り属性だけを残す)→ファイル保存(従来通り)→属性設定<br></div></section>
    <ul><li><section><h1 id=1853>
    <span class="no">[1853]</span>
    <a class="thread-title" href="#1853">Re5: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-13T01:06:05">2002年04月13日 01:06</time></h1>
    <div class="body">▼ Azumaiyaさん<br>&gt; ▼ Azumaiyaさん<br>&gt; &gt;  属性取得→属性変更(隠し属性と、システム属性を抜く)→ファイル保存(従来通り)→属性設定<br>&gt;  抜くのでは上手くいかなかったので、こんな流れにしました。<br>&gt; <br>&gt;  属性取得→属性変更(読み取り属性だけを残す)→ファイル保存(従来通り)→属性設定<br><br>いただきましたー。<br>これって明日にでもあげなおしたほうがいいかなぁ？<br>それほどでもない？（あまり困ってない）</div></section>
    <ul><li><section><h1 id=1866>
    <span class="no">[1866]</span>
    <a class="thread-title" href="#1866">Re6: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">みく</span>
    <time datetime="2002-04-14T16:42:52">2002年04月14日 16:42</time></h1>
    <div class="body"><br>共通設定の「他プロセスからの上書きを禁止する」にチェックが<br>入っていると、作成されたファイルに「リードオンリー」属性<br>が付いてしまいます。<br><br>CDocLineMgr.cpp:1016行目<br>&#9;// ファイル属性を元に戻す。<br>&#9;::SetFileAttributes(pszPath, dwFileAttribute);<br>を通ったとき。（Getしたときに排他制御している情報が読めてしまうため？）<br></div></section>
    <ul><li><section><h1 id=1874>
    <span class="no">[1874]</span>
    <a class="thread-title" href="#1874">Re7: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">Azumaiya</span>
    <time datetime="2002-04-14T23:55:49">2002年04月14日 23:55</time></h1>
    <div class="body">▼ みくさん<br>&gt; CDocLineMgr.cpp:1016行目<br>&gt; &#9;// ファイル属性を元に戻す。<br>&gt; &#9;::SetFileAttributes(pszPath, dwFileAttribute);<br>&gt; を通ったとき。（Getしたときに排他制御している情報が読めてしまうため？）<br> うーん。そうですか。<br> 何とか、上手くいく方法を考えてみます。<br> C 標準関数で、隠し属性のついたファイルが書き込みできればよかったんですが・・・。<br><br> C 標準関数のソース(VC)を眺めたときに、内部で CreateFile を呼び出す寸前にファイルの属性を FILE_ATTRIBUTE_NORMAL に決め打ちしている部分がありました。<br> その部分さえ何とかできればよいのですが・・・。<br></div></section>
    <ul><li><section><h1 id=1886>
    <span class="no">[1886]</span>
    <a class="thread-title" href="#1886">Re8: ファイル保存のバグ ＆ すべて置換の速度アップ</a>
    <span class="author">みく</span>
    <time datetime="2002-04-15T21:51:17">2002年04月15日 21:51</time></h1>
    <div class="body"><br>原因がわかりました。<br>新しいファイルとして保存するとき、<br>&#9;dwFileAttribute = ::GetFileAttributes(pszPath);<br>が失敗します。このとき、dwFileAttribute = -1(0xffffffff)のまま<br>となり、ファイルクローズ後の<br>&#9;::SetFileAttributes(pszPath, dwFileAttribute);<br>でとんでもない属性を設定してしまいます。<br><br>ですから、<br>::GetFileAttributes(pszPath);<br>で失敗した場合はNORMALを設定するようにすればただしく動作します。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></body></html>